/**
 * author:yhb
 * icon数据获得帮助类。
 * */
package com.towker.frame.share.rbac.res;

import java.io.File;

public class IconShare
{
	/**
	 * 将clzResPth转换成为base。
	 * */
	public static String getBase(String clzResPth)
	{
		/**
		 *  1. 将"%20"替换成为" "。
		 *  2. 将打头的"/"去掉。
		 *  3. 从"WEB-INF"开始截断到最后。
		 *  4. 获得"WEB-INF"之前的部分，不包含"WEB-INF"。
		 * */
		String base = "";
		StringBuilder baseSb = new StringBuilder();
		clzResPth = clzResPth.replace("%20", " ");
		baseSb.append(clzResPth);
		if (baseSb.toString().startsWith("/"))
		{
			baseSb.deleteCharAt(0);
		}
		baseSb.delete(baseSb.indexOf("WEB-INF"), baseSb.length());
		base = baseSb.toString();
		return base;
	}
	
	/**
	 * 获得资源图标的图片地址字符串数据。
	 * */
	public static String getIconData(String clzResPth)
	{
		/*
		 * str这个变量的数据形式如下：
		 * 001:css/icons/001/tree_file.gif,css/icons/001/tree_folder.gif,css/icons/001/tree_folder_open.gif;
		 * 002:css/icons/002/tree_file.gif,css/icons/002/tree_folder.gif,css/icons/002/tree_folder_open.gif;
		 * 003:css/icons/003/help.png,css/icons/003/tree_file.gif,css/icons/003/tree_folder.gif,css/icons/003/tree_folder_open.gif
		 * 001,002,003是tab控件显示的标题信息。 css/icons/001/tree_file.gif是显示的图标文件名。（部分） 每个图标文件名以逗号隔开，每个tab标签页以冒号隔开。
		 * css/icons：是图标文件的根目录。 base:是项目的跟目录“baseframwork”
		 */
		StringBuilder iconDataSb = new StringBuilder();
		String iconData = "";
		String iconsFixed = "css/icons";
		String base=getBase(clzResPth);
		String iconsRoot = base + iconsFixed;
		File iconsFolder = new File(iconsRoot);
		String[] iconsFolders = iconsFolder.list();
		for (String folder : iconsFolders)
		{
			iconDataSb.append(folder);
			iconDataSb.append(":");
			File iconsFile = new File(iconsRoot + "/" + folder);
			String[] iconsFiles = iconsFile.list();
			for (String file : iconsFiles)
			{
				if (checkEndsWith(file))
				{
					iconDataSb.append(iconsFixed);
					iconDataSb.append("/");
					iconDataSb.append(folder);
					iconDataSb.append("/");
					iconDataSb.append(file);
					iconDataSb.append(",");
				}
			}
			if (iconDataSb.toString().endsWith(","))
			{
				iconDataSb.deleteCharAt(iconDataSb.length()-1);
			}
			iconDataSb.append(";");
		}
		if (iconDataSb.toString().endsWith(";"))
		{
			iconDataSb.deleteCharAt(iconDataSb.length()-1);
		}
		iconData = iconDataSb.toString();
//		System.out.println(iconData);
		return iconData;
	}

	private static boolean checkEndsWith(String fileName)
	{
		if (fileName.endsWith("gif") || fileName.endsWith("png"))
		{
			return true;
		}
		return false;
	}
}
